package bean.dao;

import hbt.HibernateUtil;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import bean.Cliente;
import bean.Efectivo;
import bean.TarjetaCredito30;
import bean.TarjetaCredito60;

public class ClienteDAO {
	private static ClienteDAO instancia = null;
	private static SessionFactory sf = null;

	public static ClienteDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new ClienteDAO();
		} 
		return instancia;
	}
	
	public void altaDeCliente(String cuil, String razonSocial, float recargo30,float recargo60, float descuentoCtdo, String condicionIVA) {
		Cliente cliente = new Cliente();
		cliente.setCuil(cuil);
		cliente.setCondicionIVA(condicionIVA);
		cliente.setRazonSocial(razonSocial);
		Efectivo efectivo = new Efectivo();
		efectivo.setPorcentaje(descuentoCtdo);
		efectivo.setCliente(cliente);
		cliente.getFormasDePago().add(efectivo);
		TarjetaCredito30 tarjeta30 = new TarjetaCredito30();
		tarjeta30.setPorcentaje(recargo30);
		tarjeta30.setCliente(cliente);
		cliente.getFormasDePago().add(tarjeta30);
		TarjetaCredito60 tarjeta60 = new TarjetaCredito60();
		tarjeta60.setPorcentaje(recargo60);
		tarjeta60.setCliente(cliente);
		cliente.getFormasDePago().add(tarjeta60);
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(cliente);
		session.persist(efectivo);
		session.persist(tarjeta30);
		session.persist(tarjeta60);
		session.flush();
		session.getTransaction().commit();
		session.close();
	}
	
	public Cliente buscarCliente (String cuil){
		Cliente cliente = new Cliente();
		Session session = sf.openSession();
		Query query = session.createQuery("from Cliente c where c.cuil=:cuil");
		query.setParameter("cuil", cuil);
		cliente = (Cliente) query.uniqueResult();
		session.close();
		return cliente;
	}
	
}
